/**
 * Created by jiachenpan on 16/11/18.
 */

export function parseTime(time, cFormat) {
  if (arguments.length === 0) {
    return null
  }
  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
  let date
  if (typeof time === 'object') {
    date = time
  } else {
    if (('' + time).length === 10) time = parseInt(time) * 1000
    date = new Date(time)
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }
  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
    let value = formatObj[key]
    if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]
    if (result.length > 0 && value < 10) {
      value = '0' + value
    }
    return value || 0
  })
  return time_str
}

export function fromat(date, fmt) {
  const o = {
    'M+': date.getMonth() + 1, // 月份
    'd+': date.getDate(), // 日
    'h+': date.getHours(), // 小时
    'H+': date.getHours(), // 小时
    'm+': date.getMinutes(), // 分
    's+': date.getSeconds(), // 秒
    'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
    'S': date.getMilliseconds() // 毫秒
  }
  if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
  for (const k in o) {
    if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)));
  }
  return fmt

}

export function formatTime(time, option) {
  time = +time * 1000
  const d = new Date(time)
  const now = Date.now()

  const diff = (now - d) / 1000

  if (diff < 30) {
    return '刚刚'
  } else if (diff < 3600) { // less 1 hour
    return Math.ceil(diff / 60) + '分钟前'
  } else if (diff < 3600 * 24) {
    return Math.ceil(diff / 3600) + '小时前'
  } else if (diff < 3600 * 24 * 2) {
    return '1天前'
  }
  if (option) {
    return parseTime(time, option)
  } else {
    return d.getMonth() + 1 + '月' + d.getDate() + '日' + d.getHours() + '时' + d.getMinutes() + '分'
  }
}
/*
* 填充 小数点后几位
* */
export function paddingRight(number, length) {
  number = number + 0
  return (number).toFixed(length || 0)
}

/*
* 填充 整数位
* */
export function paddingleft(str, length) {
  if (str.length >= length) {
    return str
  } else {
    return paddingleft('0' + str, length)
  }
}

/* 获取当前时间左右15天的时间数组 */
export function getFifTeenDays(str, length) {
  const myDate = new Date() // 获取今天日期
  myDate.setDate(myDate.getDate() - 15)
  const dateArray = []
  let dateTemp
  for (let i = 15; i > 0; i--) {
    dateTemp = (myDate.getMonth() + 1) + '-' + myDate.getDate()
    let m = dateTemp.getMonth() + 1
    if (parseInt(m) < 10) {
      m = '0' + m
    }
    let d = dateTemp.getDate()
    if (parseInt(d) < 10) {
      d = '0' + d
    }
    dateArray.push(m + '-' + d)
  }
  for (let i = 0; i < 14; i++) {
    dateTemp = (myDate.getMonth() + 1) + '-' + myDate.getDate()
    let m = dateTemp.getMonth() + 1
    if (parseInt(m) < 10) {
      m = '0' + m
    }
    let d = dateTemp.getDate()
    if (parseInt(d) < 10) {
      d = '0' + d
    }
    dateArray.push(m + '-' + d)
  }
  return dateArray
}
